package com.leetcode;

public class Date250717 {
    /**
     * 给你一个整数数组 nums 和一个整数 x 。每一次操作时，你应当移除数组 nums 最左边或最右边的元素，然后从 x 中减去该元素的值。请注意，需要 修改 数组以供接下来的操作使用。
     * 如果可以将 x 恰好 减到 0 ，返回 最小操作数 ；否则，返回 -1
     */
    public int minOperations(int[] nums, int x) {
        int left = 0, right = 0, sum = 0, len = -1;
        int numsSum = 0;
        for(int i : nums){
            numsSum+= i;
        }
        if(numsSum < x){
            return -1;
        }
        int target = numsSum - x;
        while(right < nums.length){
            sum+=nums[right];
            while(sum > target){
                sum-=nums[left++];
            }
            if(sum == target){
                len = Math.max(len, right - left + 1);
            }
            right++;
        }
        if(len == -1)return -1;
        return nums.length - len;
    }
    public static void main(String[] args) {
        Date250717 date250717 = new Date250717();
        int[] nums = {1,1,4,2,3};
        System.out.println(date250717.minOperations(nums, 5));

    }
}
